home *** CD-ROM | disk | FTP | other *** search
- WANCHAT V1.00B by Stephan A. Edelman
- NetLink Online Information Services
- (C) 1994. All Rights Reserved. Shareware Version
-
- -------------------------------------------------------------------------
- DISCLAIMER:
-
- EXCEPT AS RESTRICTED BY LAW, THE SOFTWARE PROGRAMS CONTAINED IN THIS
- ARCHIVE ARE PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY KIND, EITHER
- EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
- WARRANTIES OF MERCHANTABILITY, TITLE OR FITNESS FOR A PARTICULAR
- PURPOSE. YOU MAY WITHOUT CHARGE, REPRODUCE AND DISTRIBUTE COPIES OF
- THIS ARCHIVE PROVIDED YOU DO NOT (1) RECEIVE ANY DIRECT PAYMENT,
- COMMERCIAL BENEFIT, OR OTHER CONSIDERATION FOR THE REPRODUCTION,
- DISTRIBUTION OR USE, OR DISTRIBUTE THIS ARCHIVE AS PART OF OR IN
- COMBINATION WITH ANY OTHER SOFTWARE OR HARDWARE PRODUCT WITHOUT THE
- PRIOR WRITTEN CONSENT OF NETLINK ONLINE INFORMATION SERVICES.
- (2) CHANGE OR OMIT ANY PROPRIETARY RIGHTS NOTICE APPEARING IN THE FILES
- CONTAINED IN THE ARCHIVE.
- -------------------------------------------------------------------------
-
-
- Motivation
- ==========
-
- The WANCHAT program was a direct result of a similar network 'chat' program
- developed by L. Brett Glass in 1988, called NETCHAT(tm). NETCHAT(tm) was
- designed to operate in a NETBIOS environment and allowed multiple users
- to communicate or 'chat' with each other in a conference type of session.
- This program worked very well, and, as a matter of fact, we utilized it
- to test wide-area-network communications across our router. However, we
- are presently removing NETBIOS support from our workstations which renders
- the NETCHAT(tm) program useless. The need arose to have a similar 'chat'
- program which would use native netware IPX. We searched the various
- libraries such as NOVLIB and NOVUSR on CompuServe, as well as the FTP
- archive of OAK.OAKLAND.EDU. We came to the conclusion that a 'chat'
- program similar to NETCHAT(tm) was not available for netware IPX. The
- programs that were available, either would not pass through our routers,
- or would only allow a maximum of two (2) people to chat at a time. We set
- out to develop our own 'chat' program using the Novell Network C interface
- for DOS, with the following guidelines:
-
- (1) Allow multiple people to chat with each other
- (2) Provide for multiple channels
- (3) Allow it to function in a multi-server, multi-network
- environment
- (4) Function in a Netware Lite(tm) environment
-
- We believe that WANCHAT has conformed to these requirements, and we hope
- that you will find it useful.
-
-
- Getting Started
- ===============
-
- WANCHAT is, in many ways, similar to the popular Internet-Relay-Chat (IRC)
- client on the internet. There are a number of command line parameters,
- each of these parameters are be described below:
-
-
- WANCHAT <channel no> [<username>,<username>,...] [/NET ADDRESS]
-
-
- The CHANNEL NO refers to the channel that you will be starting a 'chat'
- session on. You can select any number ranging from 0 to 99. IPX 'chat'
- traffic directed towards a particular channel will not interfere with
- 'chat' traffic on any other channel. The USERNAME field is optional and
- identifies a user that you wish to chat with. You can specify multiple
- users by separating them with a comma (,). Do *NOT* use any spaces in
- between the usernames. WANCHAT will then send a Novell message to these
- users identified on the command line. It must be noted that the users
- specified must exist on the default fileserver and you must be attached
- (or logged-in) to this fileserver. The following message
- will be sent to these users:
-
- STEPHAN would like to chat with you on channel X (CTRL-ENTER to clear)
-
- The next optional switch identifies an additional network to send IPX 'chat'
- packets to. This is required if you wish to chat with somebody on another
- network. It must be noted that the networks must be connected (or bridged)
- by means of a router, and, the router must pass through IPX broadcast
- packets.
-
- For example:
-
- WANCHAT 1 STEPHAN,JOHN /1000FF10
-
- This will notify users STEPHAN and JOHN, start a 'chat' session on channel
- one and also echo 'chat' traffic to network 1000FF10. Before WANCHAT enters
- the 'chat' mode, it lists the results of the send message. If the specified
- users are not logged in, then you have the option of exiting WANCHAT before
- starting a 'chat' session. Something similar to that shown below will be
- displayed:
-
- C:> WANCHAT 1 STEPHAN,JOHN
- Message sent to STEPHAN (Station 13)
- Message NOT sent to STEPHAN (Station 14)
- user JOHN not logged in
-
- Press [ESC] to quit, any other key to continue.
-
- It must be noted that you should *NOT* specify usernames on the command-
- line when you are not logged in, or, when you do not have access to
- bindery services as in the case of Netware Lite(tm).
-
-
- Beginning a Chat Session
- ========================
-
- Once you have specified your required parameters on the command-line,
- a chat session will be started. If you are logged in to a novell network,
- your username and identity (usually your first and last name) will be
- retrieved from the server's bindery. If you are not logged in, or, you
- are running Netware Lite(tm), you will be required to enter in a username.
- In this case, you can select any username you desire. The screen is cleared
- and you will have a flashing cursor at the bottom of your screen. The
- current channel number will be displayed as well as the current topic.
- Any text that you type (up to 66 characters) followed by the [ENTER] key
- will be broadcast to all users on that channel. You will see your username
- appear on the screen, followed by a colon and the text that you typed.
- Everything that is displayed above the 'topic' bar is what is received
- from the network on that channel. You have a number of options:
-
- (F1) Channels - Allows changing of the channel
- (F2) Topic - Allows changing of the topic
- (F3) Handle - Allows changing of your current username
- (ESC) Exit - Terminates the 'chat' session
-
- Each of the above listed options will be briefly described below.
-
- o Channels
-
- When you press the [F1] key during a 'chat' session,
- the text 'Channel x>' will be replaced by 'Enter new channel>'
- at this point you can enter any value ranging from 0 to 99.
- When you select a channel other than the one that you were
- already on, WANCHAT will broadcast the following message to
- the users on the previous channel:
-
- --> User STEPHAN (Stephan Edelman) has left this channel (x)
-
- The following message will be broadcast to the users on the
- channel that you are joining:
-
- --> User STEPHAN (Stephan Edelman) has joined channel x
-
- This notifies the users of that channel that you are joining
- in and wish to chat with them.
-
- o Topic
-
- When you press the [F2] key during a 'chat' session,
- the text 'Channel x>' will be replaced by the text 'Enter
- new topic>', at this point you can enter any text up to
- 30 characters in length. Once you have pressed this key,
- you are forced to enter in a new topic. The following message
- will be sent to all the users on your channel:
-
- --> The topic has been changed to 'NEW TOPIC' by STEPHAN
-
- The change in topic will also be reflected by the status bar
- in the lower left hand corner of the screen.
-
- o Handle
-
- When you press the [F3] key during a 'chat' session,
- the text 'Channel x>' will be replaced by the text 'Enter
- new handle>', at this point you can enter any text up to 30
- characters in length. Once you have pressed this key,
- you are forced to enter in a new handle for your username.
- The following message will be sent to all the users on your
- channel:
-
- --> User STEPHAN (Stephan Edelman) is now known as 'Edelman'
-
- o Exit
-
- When you press the [ESC] key during a 'chat' session, your
- 'chat' session will be immediately terminated. You will *NOT*
- be asked to confirm leaving of your channel. The following
- message will be sent to all users on your channel:
-
- --> User STEPHAN (Stephan Edelman) has left this channel (x)
-
-
-
- 'Chatting' on a WAN
- ===================
-
- When you do not specify a destination network (using the /xxxxxxxx option),
- 'chat' packets originated by you will remain within the same network
- (i.e., will not cross routers). However, when another user on another
- network has started up WANCHAT with your network number specified on the
- command-line, packets will be sent to your network as well as his own.
- For example, user A is on network 1000 and has started WANCHAT on channel
- one (WANCHAT 1). He will be sending IPX 'chat' packets on network 1000 only.
- User B is on network 1001 and has started WANCHAT on channel one and
- specified /1000 on the command-line. The moment this user started WANCHAT
- on channel one (WANCHAT 1 /1000) a message was broadcast to both networks
- (1000 and 1001) indicating user B's presence on that channel. At this
- time, the network table maintained by user A will be updated to include
- sending out 'chat' packets to the users on network 1001. This is accomplished
- by including the network number as part of the 'chat' packet. Every incoming
- packet is examined for new network addresses and the internal network table
- maintained by WANCHAT is updated. In addition, a RIP like packet (in terms
- of its function) is being broadcast by all users running WANCHAT every 30
- seconds. This allows networks several 'hops' away to also start a chat
- session with several users on different networks. The RIP (routing
- information packet) contains all of the network addresses that our known
- to a particular WANCHAT user. If a RIP packet is received that contains
- more networks than another WANCHAT user knows about, it will add the
- new network to the internal network name table. This will cause all
- WANCHAT users to eventually know about all the networks that contain
- WANCHAT users.
-
- Example 1:
- ----------
-
-
- USER 1 USER 2 USER 3 USER 4
- [1000] [1001] [1002] [1003]
-
-
- In order to have all four users 'chat' with each other, they must all
- specify a 'common' destination address. For instance, USER 1, USER 2
- and USER 4 would all specify the same network address of 1002.
- This means that USER 2 can both send and receive packets to/from USER 1,
- USER 3 and USER 4. USER 1, USER 3 and USER 4 can all receive 'chat'
- packets from USER 2, but not individually between USER 3 and USER 4, or
- USER 1 and USER 3, etc. This is due to the fact that USER 3 does not
- know about USER 2's network, USER 4 does not know about USER 3's network,
- etc. Only USER 2 knows about all the networks out there, it will send out
- a periodic RIP packet that will include the destination network of all of
- the networks it knows about, therefore, eventually all networks running
- WANCHAT will know about each other.
-
- Example 2:
- ----------
-
- One user is running WANCHAT on channel one and has specified an additional
- network where 'chat' packets should be broadcast to. There are no other
- users on the remote network that are running WANCHAT, so this user's
- identification notification (--> User XXX has joined channel 1) is sent out
- in vain. This user does not type anything in, but leaves WANCHAT running.
- Two new users on the remote network start-up WANCHAT and do not specify
- a network address, in other words, they are not interested in sending
- 'chat' packets out, other than to their own network. Each of these two
- stations will send out RIP packets every 30 seconds, however, because no
- remote address was specified, the RIP packets will not contain any
- additional networks. The one user on the remote network will also send out
- RIP packets every 30 seconds, which will be received by the two stations,
- which, in turn will update their table. As soon as these two stations
- see that another network is present, they will each send out the
- message --> USER XXXX has joined channel 1, to indicate to the one remote
- user that two additional users have been added to the WANCHAT.
-
-
- In each of the above cases, whenever a identification notification is
- sent, the receiving stations will immediately broadcast the topic
- for that channel to the new station.
-
-
- Technical Information
- =====================
-
- The channel number specified in WANCHAT is used as an offset to the base
- socket number of 0x4100, which is used for communicating 'chat' packets
- across the network. In other words, when a particular user specifies channel
- one (1), then socket number 0x4101 will be used for sending and receiving.
- The 'chat' packets are made up of the following data:
-
- Offset 00h Network address
-
- 4-byte address of the network that
- originated the packet.
-
-
- Offset 04h Packet Type Identifier
-
- 10h IS_CHANNEL_IN_USE
- 11h CHANNEL_IS_IN_USE
- 12h TOPIC_PACKET
- 13h NEW_USER_PACKET
- 14h RIP_PACKET
- 15h DATA_PACKET
-
- Offset 05h - 100h Message Data
- The message data contains the message that
- the user sent out, if the Packet Type
- identifier (offset 04h) was set to
- DATA_PACKET.
-
-
- Packet Type Identifier
- ======================
-
- The packet type identifier indicates to the receiver of the packet, what
- the contents of the packet refer to. The following structures should be
- expected for each of the different Packet Type Identifiers:
-
- (10h) IS_CHANNEL_IN_USE
-
- This packet is sent out by WANLIST to query what channels are being used
- on the network. The Message DATA portion is ignored and generally left
- blank. The reply to this query is given by the CHANNEL_IS_IN_USE packet.
-
- (11h) CHANNEL_IS_IN_USE
-
- This packet is sent out by *ALL* WANCHAT users when a IS_CHANNEL_IN_USE
- packet is received. The message portion of the CHANNEL_IS_IN_USE packet
- should contain a NULL terminated string referring to the present TOPIC
- of that channel.
-
- (12h) TOPIC_PACKET
-
- This packet is sent out by a WANCHAT user who has changed the current topic
- of conversation on a particular channel. The message portion contains a
- NULL terminated string with the new topic. The topic string should not be
- any larger than 28 bytes. It must be noted that this changes the topic
- indicated in the lower left hand corner of WANCHAT. It does *NOT* notify
- users of a TOPIC change. This is accomplished by sending out a separate
- broadcast data packet with the message --> topic has been changed
- by XXXXXX to 'XXXXX'.
-
- (13h) NEW_USER_PACKET
-
- This packet is sent out whenever a new user enters a new channel.
- The response to this packet from other WANCHAT users is to automatically
- send out the topic for channel. The message data contains the text
- --> User xxxx (XXXX XXXX) has joined channel x.
-
- (14h) RIP_PACKET
-
- This packet is broadcast every 30 seconds by every WANCHAT user. The
- first byte of the message data should contain the number of networks (N)
- that are represented by the data packet. The next four bytes are the
- first network number, the next four bytes are the next network number.
- This continues for a total of N networks.
-
- (15h) DATA_PACKET
-
- The data packet contains the message that will be broadcast to all
- the WANCHAT users and directly displayed on the screen. The message
- should not be any larger than 66 bytes.
-
-
- This concludes the Technical Information section, if you have any questions
- regarding the functionality of WANCHAT, bug reports, suggestions or
- donations, please feel free to contact me at one of the addresses
- listed below.
-
- Bugs and Shortcomings
- =====================
-
- (1) WANCHAT incorporates duplicate packet suppression. This was deemed
- necessary due to the fact that our router occasionally would echo
- packets back that were sent across it. This would manifest
- itself as two identical messages displayed on the user's screen.
- A packet having the same information as received in the previous
- packet will not be displayed if it arrived less than 165ms after
- the first packet. This just means that you can not send messages
- faster than 6 packets/sec when they are identical messages(!).
- Generally, this is not a problem, due to the fact that it takes
- longer than 165ms to type in a message.
-
- (2) WANCHAT uses IPX for communication. IPX is a connectionless or
- datagram oriented, this means that there is no guarantee of
- delivery to the destination. When running under Windows the
- occasional packet gets corrupted due to the control of IPX
- Int 7Ah by Windows. I have not yet dug into the Windows Resource
- Reference to find a way to provide more processing time for IPX.
- It is therefore strongly discouraged to run this program under
- Windows.
-
-
- If you find this program useful, I would appreciate a small donation of
- $10/network. This will encourage me to find time to improve some of the
- short-comings or to implement additional functionality.
-
-
- Paper Mail:
-
- Stephan Edelman
- 1862 Westgrove Drive
- Bright's Grove, Ontario
- N0N 1C0 Canada
-
- Electronic Mail:
-
- Internet: stephan.edelman@netlink.on.ca
- stephan.edelman@linet.netlink.on.ca
-
- CompuServe: 72303,1607
-
-
- /Mar 6, 1994
-